package com.test.manage.building;
import com.test.manage.building.bean.Building;
import com.test.manage.building.bean.BuildingConstants;
import com.test.manage.building.bean.BuildingDTO;
import com.test.uilt.DateUtil;
import com.test.uilt.PhotoUtils;

import java.io.File;
import java.util.List;

/**
 * 使用方法
 * 1.创建带有楼栋id的excel表格(.xls格式) 例如 C:/excel/insert/xxxx_插入语句.xls
 *       表头列明为id  根据表头id确定列为楼栋id列。
 *       注意表头id前面不能出现空的单元格  如果id前边单元格内内容随意填入内容，保证表头id列前不能出现空单元格 例如~ 填充 否则获取的id会蹿列
 * 2.在指定文件夹下添加别墅图片 可多张，创建楼栋的影响会随机选择一张   例如 C:/excel/photo/xxxx/原图片/   在这里存入图片最好设置像素比例 原图太大 建议832*624
 *      方法图片右键打开方式用画板，重新调整大小 选择像素832 624 此方法图片清晰度好一些
 * 3.步骤1、2确保操作正确，点击右键 执行run 'BuildingPhotoTest'...main(),此时控制台会有提示
 * 4.根据控制台提示的操作进行录入sql数据以及上传附件到服务器
 *
 * 注意xxxx表示别墅的名称，创建excel 以及路径图片路径需要遵守
 *
 *
 * 实现思路
 * 根据别墅楼栋生成excel文件， sql id手动创建防止忘记修改产生问题
 * 1.根据磁盘中excel文件，内容为固定格式 获取附件中所有id
 * 2.根据楼栋id批量生成楼栋图片，楼牌影像、楼幢整体影像、单元门影像、单元楼层分户数证明影像、首层房号证明影像、顶层房号证明影像 插入的sql
 *   同时根据文件夹内的别墅款式随机，产生的新文件复制到其他文件夹
 * 3.这里导出的excel文件名与导出的图片文件夹名称以yyyyMMddHHmmss  例如20090802080808  以防止误操作把弄好的数据替换
 * 暂时一个别墅的六张图片都是相同的某一张图片即可
 * 图片路径，及图片名称用UUID关联（图片像素大小832*624）
 *
 * 可以把该功能用页面实现，思路
 * 上传楼栋excel以及要复用的别墅图片（可以多张，每栋别墅的图像随机选取）
 * 设置导出文件地址
 * @author yudong
 * @create 2019-09-06 10:33
 */
public class BuildingMain {

    /**
     * 别墅名称
     */
    public static String VILAGE_NAME = "原生树";

    /**
     *  设置导出的excel文件与图片文件夹名称 例如20090802080808
     */
    public static Long LONG_TIME = DateUtil.getLongTime();


    /**
     * 获取该目录下所有图片用于随机设置独栋别墅的图片
     */
    public static String PHOTO_PATH = "C:/excel/" + VILAGE_NAME + "/图片/";

    /**
     * 用于上传服务器的图片
     */
    public static String DOWLOADED_PATH = "C:/excel/" + VILAGE_NAME + "/上传图片/" + LONG_TIME + "/";


    /**
     * 设置下载excel的路径以及名称
     */
    public static String EXCEL_DOWLOAD_PATH = "C:/excel/"  + VILAGE_NAME + "/" ;
    public static String EXCEL_FILE_NAME = VILAGE_NAME + "_图片_" + LONG_TIME + ".xls";



    /**
     * 配置文件路径启动此方法
     * @param args
     */
    public static void main(String[] args) {
        System.out.println(DateUtil.getCurrentTime());
        BuildingDTO dto = new BuildingDTO();
        //获取可以复制的图片可多张可以设置图片尺寸
        dto.setFiles(PhotoUtils.getPhotoAll(PHOTO_PATH, ".jpg", 832, 624, BuildingConstants.PHOTO_QUALITY_EXCELLENT));
//        dto.setFiles(PhotoUtils.getPhotoAll(PHOTO_PATH));

        //设置导入的文件类型 0别墅 1小区
        dto.setBuildingYype(BuildingConstants.BUILDING_VILLA_TYPE[1]);
        //调用
        setData(dto);



    }

    public static void setData(BuildingDTO dto) {
        //设置楼栋图像信息 可复制的图片以及需要上传服务器图片的下载地址
        //放在最上边 如果更改图片尺寸时 尽量让 excel 要上传的图片 以及 新生成的 时间一致 就不传递LONG_TIME了
        dto.setDowloadPath(DOWLOADED_PATH);
        dto.setExcelDowloadPath(EXCEL_DOWLOAD_PATH + EXCEL_FILE_NAME);

        //根据路径获取楼栋id，用于设置生成楼栋图片表关联
        File file = new File("C:/excel/" + VILAGE_NAME + "/" + VILAGE_NAME + ".xls");

        //根据excel文件 得到所有别墅的数据id
        List<Building> infos = BuildingUtils.importExcel(file, 0);

        //导出插入楼栋图片表的sql以及附件图片
        BuildingUtils.setBuildingPhotoList(infos, dto);

    }
}
